perm filename SMPLIN.FAI[2,LCS] blob sn#309748 filedate 1977-10-12 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 ******** THIS IS STANFORD (IRCAM) VERSION ******
C00006 00003	UNPAC:	0		CALL UNPAC(PW,AR)
C00010 ENDMK
CāŠ—;
; ******** THIS IS STANFORD (IRCAM) VERSION ******
	TITLE SMPLIN ; ********* USE WITH SMPLS.F4 *******
	INTERNAL UNPAC,GETFIL,FASTIN
;;	INTERNAL UNPAC,GETFIL,FASTIN,NODM,YESDM
	EXTERNAL JUNPAC

	CH3←13

DEFINE ERROR (MSG)
<	JSA 16,.ERROR
	JUMP [ASCIZ/MSG/
]
>


;CALL GETFIL(<FILE>,WDCNT)  ******** RETURNS THE WD CNT.

FILNAM:	0
FILNM2:	0
GETFIL:	0
	MOVE 1,(16)
	MOVE 0,(1)
	MOVEM 0,FILNAM
	AOS 1
	MOVE 0,(1)
	MOVEM 0,FILNM2
;;	PUSHJ 17,INTFIZ
	JSA 16,INTFIZ
	MOVE 0,[SIXBIT/SND/]
	MOVEM 0,DIR+1
;;	MOVEM 0,DIR+3

;;	PUSHJ 17,LKUP
	JSA 16,LKUP
;	EXIT 
;	SETZM DIR+1
;	JSA 16,LKUP
GETF3:	MOVS 0,DIR+3	;GET THE WD CNT. (INCLUDES HEADER)
	MOVNM 0,@1(16)	;DON'T FORGET IT'S FIXED POINT
	JRA 16,1(16)
;;	POPJ 17,
;	0
;GETF3:	JRA 16,1(16)


INTFIZ:	0	;INITS DSK FOR INPUT
;;	MOVEI REGS
;;	BLT REGS+3
	INIT CH3,17
	SIXBIT/DSK/
	0
	ERROR <CAN'T INIT DSK!>
	
INTF4:	MOVE 0,FILNAM#
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
;;INTF3:	MOVE 2,[POINT 6,DIR+2]
;;	SETZM DIR+2
INTF3:	MOVE 2,[POINT 6,DIR]
	SETZM DIR
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
;;	POPJ 17,
	JRA 16,0(16)
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
	MOVE 0,FILNM2
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
	JRST INTF1-1


LKUP:	0
;;	SETZM DIR+4
;;	SETZM DIR+1
	SETZM DIR+2
	SETZM DIR+3
	LOOKUP CH3,DIR
	EXIT
;;	POPJ 17,
	JRA 16,0(16)
DIR:	5
	BLOCK 5


;CALL FASTIN(<ARRAY>,<NO. WORDS>)

FASTIN:	0
	HRRZ 0,0(16)
	SUBI 0,1
	MOVEM 0,COM
	MOVN 0,@1(16)
	HRLM 0,COM
	INPUT CH3,COM
;	STATZ CH3,020000
;	JRST EOF
	STATZ CH3,740000
	JRST 4,.		;SAME AS HALT.
;;	POPJ 17,   		 
	JRA 16,2(16)


COM:	OCT 0,0
COM1:	0
BLKNUM:	0

.ERROR:	0
	OUTSTR [ASCIZ/?
/]				;MAKE SURE HE CAN SEE HIS ERROR
	OUTSTR @(16)		;OUTPUT ERROR MESSAGE
	CALLI 1,12		;LET USER CONTINUE
	JRA 16,1(16)
UNPAC:	0		;CALL UNPAC(PW,AR)
	HRRZ 1,1(16)
	MOVE 2,@0(16)
	SKIPE JUNPAC
	JRST HALFWD
	ADDI 1,2
	LSHC 2,-14
;;	LSHC 2,-10	;FOR 8-BIT
	ASH 3,-30
;;	ASH 3,-34
;;	FLTR 3,3	;ALL SAMPLES MUST BE IN FLOATING POINT.
	MOVEM 3,@1  ; FIXED POINT IN THIS VERSION
	SOJ 1,
	LSHC 2,-14
;;	LSHC 2,-16	;FOR 14-BIT
	ASH 3,-30
;;	ASH 3,-26
;;	FLTR 3,3	;ALL SAMPLES MUST BE IN FLOATING POINT.
	MOVEM 3,@1
	SOJ 1,
	LSHC 2,-14
;;	LSHC 2,-16
	ASH 3,-30
;;	ASH 3,-26
;;	FLTR 3,3	;ALL SAMPLES MUST BE IN FLOATING POINT.
	MOVEM 3,@1
 	JRA 16,2(16)
;;	POPJ 17,
;;HALFWD:	ADDI 1,1
HALFWD:	HLRE 3,2     	; GET LEFT HALF (1ST SAMPLE)
;;	FLTR 3,3
	MOVEM 3,(1)
	HRRE 3,2      	; GET RIGHT HALF - 2ND SMPL
;;	FLTR 3,3	; HRRE THE 'E'=EXTEND - KEEPS RIGHT SIGN.
	MOVEM 3,1(1)
 	JRA 16,2(16)
;;	POPJ 17,
 
	END